package com.gather.linkedlists;

import com.gather.orm.Book;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedList;

public class Example01 {
    public static void main(String[] args) {
        System.out.println("LinkedList链表基本使用");
        /**
         * LinkedList 使用方式 和 ArrayList 一样
         */
        LinkedList<String> strLink = new LinkedList<>();
        strLink.add("jack");
        strLink.add("tom");
        strLink.add("kerry");
        System.out.println("strList "+strLink); // strList [jack, tom, kerry]
        // 在头部添加元素 addFirst（） offerFirst()
        strLink.addFirst("头部插入元素");
        // 在尾部添加元素 addLast（） offerLast()
        strLink.addLast("尾部插入元素");
        // 另一种方式
        strLink.offer("第二种方式");

        System.out.println("改变后的strList "+strLink);// [头部插入元素, jack, tom, kerry, 尾部插入元素]
        // 移除头部元素 removeFirst（）
        strLink.removeFirst();
        System.out.println(strLink); // [jack, tom, kerry, 尾部插入元素]
        // 移除尾部元素 removeLast（）
        strLink.removeLast();
        System.out.println(strLink); // [jack, tom, kerry]
        // 获取开头元素 getFirst()
        System.out.println(strLink.getFirst()); // jack
        // 获取尾部元素 getLast()
        System.out.println(strLink.getLast()); // kerry
        /**
         * LinkedList 遍历操作同List方式一样
         * 都是那种方式 1.for 2.迭代器 3.转数组循环（不推荐）
         */
        for (String s : strLink) {
            System.out.println(s);
        }
        // 迭代器
        Iterator<String> iterator = strLink.iterator();
        while (iterator.hasNext()) {
            String next = iterator.next();
            System.out.println(next);
        }
    }
}
